08. 实现
实现:迭代策略评估
你可以在下方找到迭代策略评估的伪代码。

注意:只要对于每个状态 s\in\mathcal{S},v_\pi(s) 是有限的,策略评估就保证会收敛于策略 \pi 对应的状态值函数。对于有限的马尔可夫决策流程 (MDP),只要满足以下条件之一,就保证会收敛:
- \gamma < 1,或
- 如果智能体以任何状态 s\in\mathcal{S} 开始,并且遵守 \pi,就保证会最终达到终止状态。
请在下个部分完成 Dynamic_Programming.ipynb
的第 0 部分:探索 FrozenLakeEnv 和第 1 部分:迭代策略评估。请记得保存内容!
你可以查看 Dynamic_Programming_Solution.ipynb
的相应部分,检查你的答案是否正确。(为了访问此文件,你只需点击左上角的“jupyter”即可返回 notebook 信息中心。)

‘要找到 Dynamic_Programming_Solution.ipynb
,请返回 notebook 信息中心。’
(可选)关于收敛条件的其他注释
为了直观地了解收敛条件为何很合理,思考下两个条件都不满足的情形,因此:
- \gamma = 1,以及
- 具有状态 s\in\mathcal{S},如果智能体从该状态开始,则遵守策略 \pi 的话,它将始终不会遇到终止状态。
在这种情况下,
- 奖励没有折扣
- 某个阶段可能永远不会结束。
那么迭代策略评估可能不会收敛,这是因为状态值函数可能定义不合理!为此,注意在此情形下,计算状态值可能需要将无穷多的(预期)奖励相加,和可能不会收敛。
我们来举一个具体的例子,假设某个 MDP:
- 具有两个状态 s_1 和 s_2,其中 s_2 是终止状态
- 具有一个动作 a(注意:只有一个动作的 MDP 还可以称之为马尔可夫奖励流程 (MRP)。)
- p(s_1,1|s_1, a) = 1
在这种情况下,假设智能体的策略 \pi 是仅“选择”可以执行的动作,因此 \pi(s_1) = a。假设 \gamma = 1。根据一步动态特性,如果智能体从状态 s_1 开始,它将始终保持该状态,永远不会遇到终止状态 s_2。
在这种情况下,v_\pi(s_1) 定义不合理。为此,注意 v_\pi(s_1) 是经历状态 s_1 之后的(预期)回报,并且
v_\pi(s_1) = 1 + 1 + 1 + 1 + …
发散为正无穷。(请花时间消化这段内容,并明白如果在此示例中,其中一个条件满足了,那么 v_\pi(s_1) 将定义合理。作为可选下一步,如果你想从数学角度满足这一条件,建议你复习几何级数和负二项分布。)